Experiment Overview

Aircraft wings, helicopter rotor blades, and spacecraft solar panels are all flexible structures driven by servo actuators. Modeling them requires capturing not just the rigid-body motion of the actuator, but also the structural vibration modes of the flexible member attached to it. This lab derived the equations of motion for the SRV02 rotary flexible link system from first principles, experimentally identified the link’s stiffness from a free-oscillation test, and validated a 4-state state-space model against measured hardware responses.

Free-oscillation decay of flexible link angle θ used to identify natural frequency and stiffness
Figure 1: Free-oscillation decay of flexible link angle
Model validation – simulated vs. measured servo angle theta during step command
Figure 2: Model validation — simulated vs. measured servo angle θ
Model validation – simulated vs. measured flexible link deflection angle a
Figure 3: Model validation — simulated vs. measured link deflection α

Equipment & Tools

Approach & Equations of Motion

The system Lagrangian L = T − V was formed using the kinetic energy of both the servo base and the flexible link, and the elastic potential energy stored in the link spring. Applying the Euler-Lagrange equations to each generalized coordinate produced coupled second-order differential equations. These were rewritten in first-order state-space form ẋ = Ax + Bu, with states x = [θ, α, θ̇, α̇].

Link stiffness was determined experimentally by freely oscillating the link with the servo locked, measuring successive peak amplitudes to compute the damped natural frequency ωd and damping ratio ζ, then recovering the undamped natural frequency and applying:

Ks = Jl · ωn²    where   Jl = mlLl² / 3

Free-oscillation plot with cursor data points for logarithmic decrement calculation
Figure 4: Free-oscillation plot with cursor points for logarithmic decrement

Key Results

MATLAB Code

Three scripts handled the free-oscillation plot, model validation comparisons, and state-space to transfer function conversion.

% Free-oscillation plot
plot(data_alpha(:,1), data_alpha(:,2), 'r', 'LineWidth', 1.5);
xlabel('Time (s)');  ylabel('Angle (Deg)');  title('Free-Oscillation');

% Model validation – servo angle overlay
plot(data_theta(:,1), data_theta(:,2), 'LineWidth', 1.5);  % simulated
hold on
plot(data_theta(:,1), data_theta(:,3), 'LineWidth', 1.5);  % measured
legend('Simulated Servo Angle', 'Measured')

% State-space ? transfer function and open-loop poles
sys   = ss(A, B, C, D);
TF    = tf(sys);         % 2×1: [theta(s)/u(s); alpha(s)/u(s)]
poles = eig(A)           % P1=0, P2,3=-8.16±22.52i, P4=-24.01

Valuable Takeaways

← Back to Dynamics & Control Labs